@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu }HIN //@@D:DISASM65.DOC;AV,VR(J} POSITION PRINT H*}EAD AT PERFORATION. TURN PRTR OFF AND ON. HIT RETURN.V3 BWM  A(@23< @@+}@D2:DISASM65.PRT HIT RETURN.V3 BWM  A(@23< @@+ DISASSEMBLER 6502 Copyright 1983 By Gary C. Crider For the Nort-}h Texas Atari Computer Team. DISASSEMBLER 6502 was writtenfor the hardcore assembler languageprogrammer who is seldo.}m happy withan existing piece of software. Whenno source code is available,modifying machine language programscan be ext/}remely difficult. DISASSEMBLER 6502 creates sourcecode from machine language that canbe modified, reassembled, andexe0}cuted.SYSTEM REQUIREMENTS:MEMORY: 24k minimum and 48k desirable.INPUT DEVICES: and 1}.OUTPUT DEVICES: and one disk drive. A or is needed 2} for machine-readable output of disk boot files or large disassemblies. Double density can be ve3}ry beneficial.SOFTWARE: An is required if you wish to reassemble the output. DISAS4}SEMBLER 6502 output has been tested on the ATARI ASSEMBLER/EDITOR cartridge and MAC/65 from O5}ptimized Systems Software.INPUT: Input to the disassembler can befrom the following sources: MEMORY - Any ran6}ge of memoryaddresses from 0 to $FFFF can bedisassembled. Addresses can beentered in either decimal or hex(e.g. 100 or $7}64). DISK SECTORS - Any range ofsector numbers from 1 to 720 can bedisassembled. Sector numbers maybe entered i8}n either decimal or hex.The last three bytes of a DOS formatsector are control bytes. Theycontain the directory entry num9}ber,next sector number and number ofbytes used in the sector. Optionsare available to disassemblesectors including or ex:}cluding thesecontrol bytes. DISK BOOT FILES - By simplyplacing the disk in the specifieddrive after disk boot option;}selection, any boot file on that diskwill be disassembled. This doesnot work on double density disks. TheATARI operating<} system initializationcode only supports double densitydisk boot in half sectors. -Many times the disk boot file is=}simply a loader to load the remainderof the program. Use the sectordisassembly option to disassemble theremainder of the>} program once it hasbeen determined what sectors arebeing loaded. BINARY LOAD FILES - DISASSEMBLER6502 will disassem?}ble any DOS 2.0 orOS/A+ Version 2 format binary loadfile. Compound structures are alsosupported.OUTPUT: There ar@}e four output optionsavailable for DISASSEMBLER 6502. Anyone or more in combination can beused. You may continue to selecA}toptions until the key ispressed. At that time remaininginformation may be obtained anddisassembly begun. B} SCREEN - Output is directed tothe screen editor. A line of outputincludes the hex machine instruction,the 6502 assemblerC} languageinstruction, and the hex address ofthe instruction. PRINTER - Output is directed tothe printer. You wiD}ll be promptedfor an optional page heading to beprinted at the top of each page. Aline of output includes the hexinstrucE}tion, the line sequence number(as it would appear on a disk outputfile), the assembler instruction andthe hex address of tF}he instruction. DISK - Output is directed to aspecified disk file. The output isin LIST format and includes a linesG}equence number, assemblerinstruction, and hex address. Thefile can be ENTERed into theassembler/editor for modification aH}ndreassembly. Since most assemblerscan only assemble about 1800-2100lines of instructions, the output isput into multiplI}e files of 1600 linesor less. This allows room formodifications. An extender of X01 -Xnn is appended to the file name. AlJ}lof the output files can bereassembled as a unit by using the.INCLUDE facility and/or diskassembly facility which are avaK}ilablein many good assemblers. They canalso be assembled separately andcombined using the binary savefeature of DUP.SYS.L} A 1600 line filewill use from 120 to 150 singledensity disk sectors. Thus an emptydisk can hold two files. DoubledensiM}ty disks have double thecapacity. CASSETTE - Output is directed toa cassette recorder in the same formatas that direN}cted to disk. The filesare also split into 1600 line files.This will require most of one side ofa sixty minute cassette.O}UNRECOGNIZED INSTRUCTIONS: If an opcode is encountered thatis not recognized as a valid 6502opcode, a .BYTE instrucP}tion isgenerated. Up to three unrecog-nizable characters will be includedin a single .BYTE record. A BRKinstruction ($0Q}0) most often occursas a data byte rather than aninstruction. The disassembler treatsbinary zeros as a .BYTE character. R} Since data bytes that are validopcodes cannot be distinguished by adisassembler as data bytes, they willbe interpS}reted as instructions. Thelogic flow of the program shouldindicate which of these instructionsare actually data bytes. TT}his mis-interpretation of data bytes will notprevent the reassembled program fromlooking just like the origional.If youU} have any problems, criticismsor suggestions please write or callme. Gary C. Crider 1105 Burgess Court ArV}lington, Texas 76015 (817) 467-1114 Make as many copies of this programas you want for yourself and yourfriends. W} I only ask that you do notSELL the program as this wouldconstitute a copyright infringement.If you like this program, I wX}ould notobject if you sent me some money (anyamount you like) to help defray mydevelopment costs. If I get a littlecompeY}nsation, I can develop more"freebies" such as FASTDUP (c), DOSWIZARD (c) and DISSASEMBLER 6502 (c).If you have some softwaZ}re thatyou have developed, I would considerthat very good compensation if youcare to send it to me. THANKS.OS/A+ and MA[}C/65 are trademarks ofOptimized Systems Software, Inc.,Cupertino, CA.ATARI is a trademark of Atari, Inc.,Sunnyvale, CA.}Hl (LF*w [0B4D(EL7(E: JK VK(L]( REMOVE CARTRIDGE0DE BHI V ]}Lx(` ^} _} `} .BYTE($ ,X)($ ),Y$ ,X$ ,Y$ ,X$ ,Y($ )*=$( * 2 %/( +(BL,DL` a}:MLP,SL 6XL 6` 1B(Lw 1B(LF* * E( ( ( ( (/ )0 B V0 b}BD*EL*E: JK V` H + FL9+ ENTER PRINTOUT TITLE (1 LINE):0D)EB&HI V` : c} M; >` ,(ɭ(ʭ(ǭ( b+ +ɍ(ʍ((͌( (( p P ((PI `(ieɅɥi(ieDžǥi`( d}(C*(( F()()( F((()() < $= >`H ;, FL=,}`H M, FLO, ` 9- + l+ 1BH e} k, FLp,ś)? L*LF* B VBԝD(EJK VLA , &5 + ,L, , ,`(( f}((`ɩM b+ +Ǎ(ȍ((͌( (( p P ((PI ̭(` ((L>H H- FLa-} ENTER START AD g}DRESS: -((((((((H - FL- ENTER END ADDRESS: -((((L,,(0D(E h}BHI V($LV.001:-( ذ ٥ԍ(Ս( ((8`H 8. FLT.*INVALID- PLEASE REENTER: i}8`(((( .5(ɛ? /)((((ɛ .(ɛ( /((`(H((h(`(JJJJ(` .(( ( j}((JJJJ(`00$: (`A0Gi ) (L.0L).: ) ((`A0Gi L / y/ 0E PDC3`( 5L%/( k} 5L%/( }1(( 1 1L%/( 5L%/"H / FL/} SELECT OUTPUT OPTION(S):[H / FL0 E SCREE l}N EDITOR P PRINTER D DISKVH %0 FL|0 C CASSETTE m} RETURN TO CONTNUE `H 0 FL0 `)? L*)_ H0 }0 n}h`)? L*:0H0 }0h`(:)((`9H &1 FL`1 Ρ YOU ARE GOING T o}O WRITE ON YOUR INPUT DISK.)? L*`3H 1 FL1 ENTER OUTPUT FILE SPECS WITHOUT EXTENDER: p} 0D(EB HI V`((ԭ( ؠ0()(06( (((( q} 0(L22 Lf2(ɛ .LJ2.(((((((詛( (` 2 0(BD MXS 5` 4 r}(( 4`H Ӡ2 FL2} DISASSEMBLER 6502H 3 FL3 Version 1.0!H &3 FLH3 Copyright 1983 s} by Gary C. CriderH W3 FLu3 SELECT INPUT OPTION:?H 3 FL3 B BINARY LOAD FILE t} D DISK BOOT FILELY,H1( |} hN@  Y0(((((H((h(`((`( 7(m(((m((1 }}M  :LAm((m((`ɩMʩ(M((m(((m((8(((( =9(͚( (( p P ~}((PI `m((m((8(ɥ(eɅɩMeʅ8ɥʭ(L9(MML}8NMNML}8 }(|}MML}8MM|}NML}8(1M (m(m :*΢(  } p P PI LA 9 b+ +ɍ(ʍ((ͦ( (( p P ((PI L9`M˭M(e˅˭(e̩̅ȑȑ`( }( ( ( (R@ Y`H @: FL]: ENTER INPUT DRIVE NUMBER: L0 1:5)(( 1(( 7M(M }(M(M(MǭMȩ((M((( + G8(( >LY,( ( p P (PI L0;ͩ(Ω˩F̠ }ɍ(L&;(e˅˭(e̅L ;ˑ͈`F(8((((`( Ǎ(ȍ( + ( )7 .) ; }; =l( = < $=`;)$) F()() F()()` F(((((- F((((( F(( }((`m((m(((ԭ( ؠ0)))06) )))) 0)L]<` ) }m((m(((ԭ( ؠ0)))06) )))) 0)L<`( t<) }))) < ())()`(,)q)))))))(8))F)(N) })`)`(F((*(`(((`(` ()`()(),)))`( })(),)))(`)?L*(`(K(!0D(E B HI VLx>0D)E B HI V }(.к(L? &ALA((4m((m(( D)E BHI V9LAm((m(( D)E B }HI V).Ж(d OALA((& @PD)E BHI V+LA @PD)E BHI V).в }(L? @LA((L&@(: ( p P (PI 0 @m((m((@.D)E B8HI VLA ) } )7 g)((@ ( p P (PI  ZB`(: ( p P (PI 0 @m((m((@gD)E } B8HI VLA(.L?L?(`m((m((`.) ? ? ? ? ? ?@D)E B0HI V ?( }( .)`@ B V@BDAEL AP:JK V`.) ? @` B V BD(EJK V`P B VP }BmDAELpAC:JK V`H A FLAERROR- . ABNORMAL END.`(((ԭ( ؠ0A)A06A } AAAA 0ALA 1B ~A)? L*LY, B V@ B V B VP B V }`((`P B V B VCH B FLB 1600 LINES OUTPUT TO FILE.(LC }!H B FLC REVERSE OR INSERT NEW CASSETTE.((LkCH C FL?C INSERT NEW DISK IF NECESSARY. CH QC FLeC } SECTORS FREE. 1(()? ((` SC( 71 (( } (h  R@ Yԭ ؠ0SC)SC06SC SCSCSCSC 0SCL5D` }F(L_;$) F()()L;L;*) F()()L;$) F()()L;#)$) F( })()L;A)L; L LLD$) F()() F()()L;Ǎ(ȍ(m((m((ɍ(0 }((m(((m(($)( F()()( F()()L;*) F()()L;$*) F( })()L;)*) F()() F()()L;LLD0*) F()() F()()L; }<*) F()() F()()L;7*) F()()L;FLF)JJJJ F(F) F(LF ii }0``turhhhxyHH0 V`BYTZDORAxDBYTZDBYTZDBYTZDORADASLDBYTZDPHPuDORADASLDBYTZDBYTZDORADASLD }BYTZDBPLEORAEBYTZDBYTZDBYTZDORAEASLEBYTZDCLCuDORAEBYTZDBYTZDBYTZDORAFASLFBYTZDJSRDANDxDBYTZDBYTZ }DBITDANDDROLDBYTZDPLPuDANDDROLDBYTZDBITDANDDROLDBYTZDBMIEANDEBYTZDBYTZDBYTZDANDEROLEBYTZDSEC }uDANDEBYTZDBYTZDBYTZDANDFROLFBYTZDRTIuDEORxDBYTZDBYTZDBYTZDEORDLSRDBYTZDPHAuDEORDLSRDBYTZDJMPDEOR }DLSRDBYTZDBVCEEOREBYTZDBYTZDBYTZDEORELSREBYTZDCLIuDEOREBYTZDBYTZDBYTZDEORFLSRFBYTZDRTSuDADCxDBY }TZDBYTZDBYTZDADCDRORDBYTZDPLAuDADCDRORDBYTZDJMP>FADCDRORDBYTZDBVSEADCEBYTZDBYTZDBYTZDADCEROREB }YTZDSEIuDADCEBYTZDBYTZDBYTZDADCFRORFBYTZDBYTZDSTAxDBYTZDBYTZDSTYDSTADSTXDBYTZDDEYuDBYTZDTXAuDBYTZD }STYDSTADSTXDBYTZDBCCESTAEBYTZDBYTZDSTYESTAESTXrFBYTZDTYAuDSTAETXSuDBYTZDBYTZDSTAFBYTZDBYTZDLDY }DLDAxDLDXDBYTZDLDYDLDADLDXDBYTZDTAYuDLDADTAXuDBYTZDLDYDLDADLDXDBYTZDBCSELDAEBYTZDBYTZDLDYELDA }ELDXrFBYTZDCLVuDLDAETSXuDBYTZDLDYFLDAFLDXEBYTZDCPYDCMPxDBYTZDBYTZDCPYDCMPDDECDBYTZDINYuDCMPDDEX }uDBYTZDCPYDCMPDDECDBYTZDBNEECMPEBYTZDBYTZDBYTZDCMPEDECEBYTZDCLDuDCMPEBYTZDBYTZDBYTZDCMPFDECFBY }TZDCPXDSBCxDBYTZDBYTZDCPXDSBCDINCDBYTZDINXuDSBCDNOPuDBYTZDCPXDSBCDINCDBYTZDBEQESBCEBYTZDBYTZDB }YTZDSBCEINCEBYTZDSEDuDSBCEBYTZDBYTZDBYTZDSBCFINCFBYTZDH(L¥ Li¥iå }iiLL(DuDSBCEBYTZDBYTZDBYTZDSBCFINCFBYTZDH(L¥ Li¥iå <@H<@5<Q#(-/5-@5<5<@-/5#(-/5-}/(H<@5/5<@H<@5<Q#(-/5-@5<yQ[Q}`Qy`[lQ[`[`l`QlQyQ`QlQyllyQ[Q}`Qy`[lQ[`[`l`QlQyQ`QlQyll[Q`Ql}QUQlQyQQUQ[Q`QlQyQQyrlQyQ[Q`Q}y`[lQ[`[`y[<`<lQyQ[HQ[`Qy`[Q`Ql}QUQlQyQQUQ[Q`QlQyQQyrlQyQ[Q`Q}y`[lQ[`[`y[<`<lQyQ[HQ[`QyЩҍ)rq*rm`srasҍ}#on$o|po}pqpqdsss`Djtj>j?j?j @j>j?jL_>`#H <#H L#H@H/[#QH`/lyy`/}`#H</#< @#<5